#ifndef __p_conventional__
#define __p_conventional__
if(token.Matches(_("p_conventional"))&&(T.GetCount()==5))
{
    IsNotExtFunc = false;

    uint MC = uint(calc(T[0]));   //Base line chain
    double r = calc(T[1]);
    double a = calc(T[2]);
    double z = calc(T[3]);
    double ap= calc(T[4]);

//    if(C[MC].Size()==0){ERR << _("no base line chain found");break;}  //If no path then exit...
    if(C[MC].Z.ME.size()==0){ERR << _("no chamfer Z image found");break;}
    if(ap<=0){ERR << _("NO CUTTING ap zero or up?\n");break;}

    //Offset test
    while(true)
    {
        a=a-ap;
        if(a<z)a=z;
        mChain BW = C[MC].Offset( -GetToolOffset(a,&SIM.T[tNum],&C[MC].Z) );

        CODE << BW.CTG(r,a);

        if(a<=z)break;
        if(a>=r)break;
    }
    continue;
};
#else
INFO << _("p_conventional(c,i,r,a,z,Ap)<BR>");
if(token.Matches(_("p_conventional(*,*,*,*,*,*)")))
{
    INFO = _("<b>p_conventional</b>(c,i,r,a,z,Ap)<BR>");
    INFO << _("(conventional milling side)<BR>");
    INFO << _("c = base line chain<BR>");
    INFO << _("i = Z image chamfer<BR>");
    INFO << _("r = end altitude<BR>");
    INFO << _("a = surface<BR>");
    INFO << _("z = total depth<BR>");
    INFO << _("Ap= cut depth<BR><BR>");
    INFO << _("creates chain to current chain<BR>");
    INFO << _("<BR>");
    return true;
}
#endif
